package com.atguigu.boot_redis05_cart.service;

import com.atguigu.boot_redis05_cart.vo.Cart;
import com.atguigu.boot_redis05_cart.vo.CartItem;

import java.util.List;
import java.util.concurrent.ExecutionException;

/**
 * @author gcq
 * @Create 2021-01-03
 */
public interface CartService {

    /**
    * @需求描述: 系统管理员 购物车组 模块 添加商品到购物车中
    * @创建人: 郭承乾
    * @创建时间: 2021/01/03 19:20
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    void addToCart(Long skuId, Integer num) throws ExecutionException, InterruptedException;

    /**
    * @需求描述: 系统管理员 购物车组 模块 获取购物项信息
    * @创建人: 郭承乾
    * @创建时间: 2021/01/03 20:12
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    CartItem getCartItem(Long skuId);

    /**
    * @需求描述: 系统管理员 购物车组 模块 显示购物车信息
    * @创建人: 郭承乾
    * @创建时间: 2021/01/04 12:01
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    Cart getCart() throws ExecutionException, InterruptedException;

    /**
    * @需求描述: 系统管理员 购物车组 模块 用户选中购物项后更新在redis中的购物项数据
    * @创建人: 郭承乾
    * @创建时间: 2021/01/04 15:55
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    void checkItem(Long skuId, Integer checked);

    /**
    * @需求描述: 系统管理员 购物车组 模块 用户更改购物车中购物项的数量
    * @创建人: 郭承乾
    * @创建时间: 2021/01/04 16:07
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    void updateItem(Long skuId, Integer num);

    /**
    * @需求描述: 系统管理员 购物车组 模块 用户删除购物车中的购物项
    * @创建人: 郭承乾
    * @创建时间: 2021/01/04 16:40
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    void deleteItem(Long skuId);

    /**
    * @需求描述: 系统管理员 购物车组 模块 当前购物车选中购物项
    * @创建人: 郭承乾
    * @创建时间: 2021/01/05 15:11
    * @修改需求:
    * @修改人:
    * @修改时间:
    * @需求思路:
    */
    List<CartItem> getCurrentUserCartItem();
}